JavaScriptãªããžã§ã¯ããã¿ãŒã³ãããã³ã°ã®ããã©ãŒãã³ã¹ã詳现ã«åæããæ§ã ãªãã¯ããã¯ã«ãããåŠçéåºŠãæ¢æ±ããã°ããŒãã«ãªèªè åãã«æé©åã®ç¥èŠãæäŸããŸãã
JavaScriptãã¿ãŒã³ãããã³ã°ãªããžã§ã¯ãã®ããã©ãŒãã³ã¹ïŒãªããžã§ã¯ããã¿ãŒã³åŠçé床
åçãªJavaScriptéçºã®äžçã§ã¯ãå¹çãšããã©ãŒãã³ã¹ãæãéèŠã§ããã¢ããªã±ãŒã·ã§ã³ãè€éã«ãªãã«ã€ããŠãããŒã¿æ§é ã广çã«åŠçããå¿ èŠæ§ãé«ãŸããŸãããªããžã§ã¯ããã¿ãŒã³ãããã³ã°ã¯ãéçºè ã宣èšçãªæ¹æ³ã§ãªããžã§ã¯ãããããããã£ãæœåºããŠå²ãåœãŠãããšãå¯èœã«ãã匷åãªæ©èœã§ãããããã§éèŠãªåœ¹å²ãæãããŸãããã®å æ¬çãªããã°èšäºã§ã¯ãJavaScriptã®ãªããžã§ã¯ããã¿ãŒã³ãããã³ã°ã®ããã©ãŒãã³ã¹é¢ã«çŠç¹ãåœãŠãç¹ã«ãªããžã§ã¯ããã¿ãŒã³ã®åŠçé床ã«ã€ããŠæ·±ãæãäžããŸããæ§ã ãªãã¯ããã¯ãæ¢æ±ãããã®ããã©ãŒãã³ã¹ç¹æ§ãåæããã³ãŒãã®æé©åãç®æãäžçäžã®éçºè ã«å®çšçãªæŽå¯ãæäŸããŸãã
JavaScriptã«ããããªããžã§ã¯ããã¿ãŒã³ãããã³ã°ã®çè§£
ããã©ãŒãã³ã¹ã«ã€ããŠæãäžããåã«ãJavaScriptã«ããããªããžã§ã¯ããã¿ãŒã³ãããã³ã°ãäœãæå³ããã®ããæç¢ºã«çè§£ããŸãããããã®æ žå¿ã¯ããªããžã§ã¯ããåè§£ãããã®ããããã£ã倿°ã«ãã€ã³ãããã¡ã«ããºã ã§ããããã«ãããé¢åãªæåã®ããããã£ã¢ã¯ã»ã¹ãå¿ èŠã ã£ãã³ãŒããå€§å¹ ã«ç°¡çŽ åãããŸãã
åå²ä»£å ¥ïŒã¢ãã³ãªã¢ãããŒã
ECMAScript 6 (ES6)ã§ãªããžã§ã¯ãã®åå²ä»£å ¥ãå°å ¥ãããããããªããžã§ã¯ããã¿ãŒã³ãããã³ã°ã®äºå®äžã®æšæºãšãªããŸãããããã«ããããªããžã§ã¯ãããããããã£ãåãåºããå¥ã ã®å€æ°ã«å²ãåœãŠãããšãã§ããŸãã
åºæ¬çãªåå²ä»£å ¥ïŒ
const user = {
name: 'Alice',
age: 30,
email: 'alice@example.com'
};
const { name, age } = user;
console.log(name); // "Alice"
console.log(age); // 30
ãã®ã·ã³ãã«ãªæ§æã¯ãç¹å®ã®ããŒã¿ãç°¡æœã«æœåºããæ¹æ³ãæäŸããŸãããŸããåå²ä»£å ¥äžã«å€æ°ããªããŒã ããããããããã£ãååšããªãå Žåã«ããã©ã«ãå€ãæäŸãããããããšãã§ããŸãã
const person = {
firstName: 'Bob'
};
const { firstName: name, lastName = 'Smith' } = person;
console.log(name); // "Bob"
console.log(lastName); // "Smith"
åå²ä»£å ¥ã«ãããRestããããã£
ãªããžã§ã¯ãåå²ä»£å ¥å ã®restæ§æïŒ`...`ïŒã䜿çšãããšãæ®ãã®ããããã£ãæ°ãããªããžã§ã¯ãã«éçŽã§ããŸããããã¯ãç¹å®ã®ããããã£ãåé¢ããæ®ãã®ãªããžã§ã¯ããå¥éåŠçããå¿ èŠãããå Žåã«ç¹ã«äŸ¿å©ã§ãã
const product = {
id: 101,
name: 'Laptop',
price: 1200,
stock: 50
};
const { id, ...otherDetails } = product;
console.log(id); // 101
console.log(otherDetails); // { name: 'Laptop', price: 1200, stock: 50 }
ãã¹ããããåå²ä»£å ¥
ãªããžã§ã¯ãã®åå²ä»£å ¥ã¯ãã¹ãããããªããžã§ã¯ãã«ãé©çšã§ããæ·±ããã¹ããããããããã£ã«ç°¡åã«ã¢ã¯ã»ã¹ã§ããŸãã
const company = {
name: 'TechGlobal Inc.',
location: {
city: 'New York',
country: 'USA'
}
};
const { location: { city, country } } = company;
console.log(city); // "New York"
console.log(country); // "USA"
ãªããžã§ã¯ããã¿ãŒã³åŠçã«ãããããã©ãŒãã³ã¹ã®èæ ®äºé
åå²ä»£å ¥ã¯éåžžã«äŸ¿å©ã§ããããã®ããã©ãŒãã³ã¹ç¹æ§ã¯ãå€§èŠæš¡ãªã¢ããªã±ãŒã·ã§ã³ãããã©ãŒãã³ã¹ãéèŠãªã³ãŒãã»ã¯ã·ã§ã³ã«ãšã£ãŠéèŠãªèæ ®äºé ã§ããJavaScriptãšã³ãžã³ããããã®æäœãã©ã®ããã«åŠçããããçè§£ããããšã¯ãéçºè ãæ å ±ã«åºã¥ããæææ±ºå®ãè¡ãã®ã«åœ¹ç«ã¡ãŸãã
åå²ä»£å ¥ã®ãªãŒããŒããã
åºæ¬çãªã¬ãã«ã§ã¯ãåå²ä»£å ¥ã«ã¯ãªããžã§ã¯ãã®ããããã£ãžã®ã¢ã¯ã»ã¹ããã®ååšã®ç¢ºèªããããŠå€æ°ãžã®å²ãåœãŠãå«ãŸããŸããçŸä»£ã®JavaScriptãšã³ãžã³ïŒChromeãNode.jsã®V8ãFirefoxã®SpiderMonkeyãªã©ïŒã¯é«åºŠã«æé©åãããŠããŸããããããéåžžã«ããã©ãŒãã³ã¹ãéèŠãããã·ããªãªã§ã¯ãç¹ã«ä»¥äžã®å Žåã«ãçŽæ¥çãªããããã£ã¢ã¯ã»ã¹ãšæ¯èŒããŠããããªãªãŒããŒããããçããå¯èœæ§ãããããšãçè§£ããŠãã䟡å€ããããŸãã
- 倿°ã®ããããã£ãåå²ä»£å ¥ããå Žåã
- æ·±ããã¹ããããããããã£ãåå²ä»£å ¥ããå Žåã
- ãªããŒã ãããã©ã«ãå€ãå«ãè€éãªåå²ä»£å ¥ãã¿ãŒã³ã䜿çšããå Žåã
ãã³ãããŒã¯ïŒåå²ä»£å ¥ vs. çŽæ¥ã¢ã¯ã»ã¹
ãããã®éããå®éåããããã«ãããã€ãã®ãã³ãããŒã¯ã·ããªãªãèããŠã¿ãŸããããæ£ç¢ºãªããã©ãŒãã³ã¹æ°å€ã¯ãç°ãªãJavaScriptãšã³ãžã³ããã©ãŠã¶ã®ããŒãžã§ã³ãããã³ããŒããŠã§ã¢ã«ãã£ãŠå€§ããç°ãªãå¯èœæ§ãããããšã«æ³šæããŠãã ããããããã£ãŠããããã¯äžè¬çãªåŸåã瀺ãäŸã§ãã
ã·ããªãª1ïŒåçŽãªããããã£æœåº
const data = {
a: 1, b: 2, c: 3, d: 4, e: 5,
f: 6, g: 7, h: 8, i: 9, j: 10
};
// Technique 1: Destructuring
const { a, b, c, d, e } = data;
// Technique 2: Direct Access
const valA = data.a;
const valB = data.b;
const valC = data.c;
const valD = data.d;
const valE = data.e;
ãã®åçŽãªã±ãŒã¹ã§ã¯ãåå²ä»£å ¥ã¯çŽæ¥ã¢ã¯ã»ã¹ãšã»ãŒåãéãããããã«éåžžã«è¿ãã§ãããšã³ãžã³ã¯é£ç¶ããããããã£ã¢ã¯ã»ã¹ãå¹ççã«æé©åã§ããŸãã
ã·ããªãª2ïŒå€æ°ã®ããããã£ã®æœåº
åäžã®ãªããžã§ã¯ããã倿°ã®ããããã£ãåå²ä»£å ¥ããå Žåãããã©ãŒãã³ã¹ã®å·®ã¯ããé¡èã«ãªããããããŸããããããã§ãäžè¬çãªWebã¢ããªã±ãŒã·ã§ã³ã«ãšã£ãŠã¯ããããªå·®ã§ããããšãå€ãã§ãããšã³ãžã³ã¯è€æ°ã®ã«ãã¯ã¢ãããšå²ãåœãŠãå®è¡ããå¿ èŠããããŸãã
ã·ããªãª3ïŒãã¹ããããããããã£ã®æœåº
ãã¹ããããåå²ä»£å ¥ã«ã¯ãè€æ°ã¬ãã«ã®ããããã£ã¢ã¯ã»ã¹ãå«ãŸããŸããæ§æçã«ã¯ã¯ãªãŒã³ã§ããããããã«å€ãã®ãªãŒããŒããããçºçãããå¯èœæ§ããããŸãã
const complexData = {
user: {
profile: {
name: 'Charlie',
details: {
age: 25,
city: 'London'
}
}
}
};
// Destructuring
const { user: { profile: { details: { age, city } } } } = complexData;
// Direct Access (more verbose)
const ageDirect = complexData.user.profile.details.age;
const cityDirect = complexData.user.profile.details.city;
ãã®ãããªãã¹ããããã·ããªãªã§ã¯ãåå²ä»£å ¥ãšé£éçãªçŽæ¥ããããã£ã¢ã¯ã»ã¹ã®ããã©ãŒãã³ã¹å·®ã¯éåžžæå°éã§ããããã§ã®åå²ä»£å ¥ã®äž»ãªå©ç¹ã¯ãå¯èªæ§ãšã³ãŒãã®éè€ã®åæžã§ãã
Restããããã£ã®ããã©ãŒãã³ã¹
ãªããžã§ã¯ãã«å¯Ÿããrestæ§æïŒ`...`ïŒã¯ãæ°ãããªããžã§ã¯ããäœæããããã«ããããã£ãã³ããŒããããšãå«ã¿ãŸãããã®æäœã«ã¯èšç®ã³ã¹ããããããç¹ã«æ®ãã®ãªããžã§ã¯ãã«å€ãã®ããããã£ãããå Žåã«é¡èã§ããã»ãã®æ°åã®ããããã£ããå¿ èŠãšããªãéåžžã«å€§ããªãªããžã§ã¯ãã®å Žåãrestããããã£ã䜿çšããåå²ä»£å ¥ãããçŽæ¥ã¢ã¯ã»ã¹ã®æ¹ããããã«éããããããŸãããããã®å·®ã¯éåžžãæçãã®ããã«åå²ä»£å ¥ãé¿ããã»ã©éèŠã§ã¯ãããŸããã
代æ¿ãªããžã§ã¯ãåŠçæè¡ãšãã®ããã©ãŒãã³ã¹
åå²ä»£å ¥ã¯ãªããžã§ã¯ããã¿ãŒã³ãããã³ã°ã®æãäžè¬çãªåœ¢åŒã§ãããä»ã®JavaScriptã®æ§æã§ãåæ§ã®çµæãéæã§ããããããã«ç¬èªã®ããã©ãŒãã³ã¹ãããã¡ã€ã«ããããŸãã
åŸæ¥ã®ããããã£ã¢ã¯ã»ã¹
ãã³ãããŒã¯ã§èŠãããã«ãçŽæ¥çãªããããã£ã¢ã¯ã»ã¹ïŒ`object.propertyName`ïŒã¯ããªããžã§ã¯ãããããŒã¿ãååŸããæãåºæ¬çãªæ¹æ³ã§ããããã¯çŽæ¥çãªã«ãã¯ã¢ããã§ãããããäžè¬çã«ãªãŒããŒããããæãäœãã§ããããããæãåé·ã§ããããŸãã
const person = { name: 'David', age: 40 };
const personName = person.name;
const personAge = person.age;
ããã©ãŒãã³ã¹ïŒåã ã®ããããã£ã¢ã¯ã»ã¹ã«ã¯äžè¬çã«æéã§ããè€æ°ã®ããããã£ãæœåºããéã«ã¯ãå¯èªæ§ãäœããç¹°ãè¿ããå€ããªããŸãã
`Object.keys()`, `Object.values()`, `Object.entries()`
ãããã®ã¡ãœããã¯ããªããžã§ã¯ãã®ããããã£ãå埩åŠçããæ¹æ³ãæäŸããŸããåå²ä»£å ¥ãšåãæå³ã§ã®çŽæ¥çãªãã¿ãŒã³ãããã³ã°ã§ã¯ãããŸããããã«ãŒããä»ã®é åã¡ãœãããšçµã¿åãããŠãªããžã§ã¯ãããŒã¿ãåŠçããããã«ãã䜿çšãããŸãã
const settings = {
theme: 'dark',
fontSize: 16,
notifications: true
};
// Using Object.entries with destructuring in a loop
for (const [key, value] of Object.entries(settings)) {
console.log(`${key}: ${value}`);
}
ããã©ãŒãã³ã¹ïŒãããã®ã¡ãœããã¯ããªããžã§ã¯ãã®åæå¯èœãªããããã£ãå埩åŠçããæ°ããé åãäœæããŸããããã©ãŒãã³ã¹ã®ãªãŒããŒãããã¯ããããã£ã®æ°ã«é¢é£ããŸããåçŽãªæœåºã®å Žåãåå²ä»£å ¥ãããå¹çãæªãã§ããããããåçã«ãã¹ãŠã®ããããã£ãŸãã¯ãã®ãµãã»ãããåŠçããå¿ èŠãããã·ããªãªã«ã¯åªããŠããŸãã
`switch`æïŒç¹å®ã®å€ã®ãããã³ã°çšïŒ
ããããã£ãæœåºããããã®çŽæ¥çãªãªããžã§ã¯ããã¿ãŒã³ãããã³ã°ã§ã¯ãããŸãããã`switch`æã¯å€ãè€æ°ã®å¯èœãªã±ãŒã¹ãšæ¯èŒããããã«äœ¿çšããããã¿ãŒã³ãããã³ã°ã®äžåœ¢æ ã§ããç¹å®ã®ããããã£ã«åºã¥ããŠãªããžã§ã¯ããæ¡ä»¶ä»ãã§åŠçããããã«äœ¿çšã§ããŸãã
function processCommand(command) {
switch (command.type) {
case 'CREATE':
console.log('Creating:', command.payload);
break;
case 'UPDATE':
console.log('Updating:', command.payload);
break;
default:
console.log('Unknown command');
}
}
processCommand({ type: 'CREATE', payload: 'New Item' });
ããã©ãŒãã³ã¹ïŒ`switch`æã¯ã倿°ã®é¢æ£çãªã±ãŒã¹ã«å¯ŸããŠäžè¬çã«éåžžã«é«æ§èœã§ããJavaScriptãšã³ãžã³ã¯ãã°ãã°ããããå¹ççãªãžã£ã³ãããŒãã«ã«æé©åããŸãããã®ããã©ãŒãã³ã¹ã¯`command`å ã®ããããã£ã®æ°ã«ã¯äŸåããŸãããã`case`æã®æ°ã«äŸåããŸããããã¯ãªããžã§ã¯ãã®åå²ä»£å ¥ãšã¯ç°ãªãçš®é¡ã®ãã¿ãŒã³ãããã³ã°ã§ãã
ã°ããŒãã«ã¢ããªã±ãŒã·ã§ã³ã®ããã®ãªããžã§ã¯ããã¿ãŒã³åŠçã®æé©å
ã°ããŒãã«ãªèŠèŽè ã察象ã«ã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ããå Žåãæ§ã ãªãããã¯ãŒã¯ç¶æ³ãããã€ã¹ã®èœåãå°åããšã®ããŒã¿ã»ã³ã¿ãŒã®é å»¶ã®ãããããã©ãŒãã³ã¹ã®èæ ®äºé ã¯ããã«éèŠã«ãªããŸãã以äžã«ããªããžã§ã¯ããã¿ãŒã³åŠçãæé©åããããã®æŠç¥ãããã€ã瀺ããŸãã
1. ã³ãŒãããããã¡ã€ãªã³ã°ãã
æãéèŠãªã¹ãããã¯ãå®éã®ããã©ãŒãã³ã¹ããã«ããã¯ãç¹å®ããããšã§ããæ©ãããæé©åã¯ããªãã§ãã ããããã©ãŠã¶ã®éçºè ããŒã«ïŒããã©ãŒãã³ã¹ããã«ïŒãNode.jsã®ãããã¡ã€ãªã³ã°ããŒã«ã䜿çšããŠãæãæéãæ¶è²»ããŠããæ£ç¢ºãªé¢æ°ãæäœãç¹å®ããŸããã»ãšãã©ã®å®éã®ã¢ããªã±ãŒã·ã§ã³ã§ã¯ããªããžã§ã¯ãã®åå²ä»£å ¥ã®ãªãŒããŒãããã¯ããããã¯ãŒã¯ãªã¯ãšã¹ããè€éãªã¢ã«ãŽãªãºã ããŸãã¯DOMæäœãšæ¯èŒããŠç¡èŠã§ããã»ã©å°ããã§ãã
2. ããã©ãŒãã³ã¹ã«é倧ãªåœ±é¿ããªãéãå¯èªæ§ãåªå ãã
ãªããžã§ã¯ãã®åå²ä»£å ¥ã¯ãã³ãŒãã®å¯èªæ§ãšä¿å®æ§ãå€§å¹ ã«åäžãããŸããã»ãšãã©ã®ãŠãŒã¹ã±ãŒã¹ã«ãããŠãåå²ä»£å ¥ãšçŽæ¥ã¢ã¯ã»ã¹ã®ããã©ãŒãã³ã¹å·®ã¯ãæçããç ç²ã«ããã»ã©å€§ãããããŸããããŸããã¯ãªãŒã³ã§çè§£ããããã³ãŒããåªå ããŠãã ããã
3. æ·±ããã¹ããããæ§é ãšå€§ããªãªããžã§ã¯ãã«æ³šæãã
éåžžã«å€§ããããŸãã¯æ·±ããã¹ãããããªããžã§ã¯ããæ±ã£ãŠããããããã¡ã€ãªã³ã°ã§ããã©ãŒãã³ã¹ã®åé¡ã瀺ãããå Žåã¯ã以äžãæ€èšããŠãã ããã
- éžæçãªåå²ä»£å ¥ïŒå®éã«å¿ èŠãªããããã£ã®ã¿ãåå²ä»£å ¥ããŸãã
- äžèŠãªRestæäœãé¿ããïŒã»ãã®æ°åã®ããããã£ããå¿ èŠãªããæ®ãã®ãªããžã§ã¯ãã䜿çšããæå³ããªãå Žåã¯ãããã©ãŒãã³ã¹ãæåªå ããããªã`...rest`æ§æãé¿ããŠãã ããã
- ããŒã¿ã®æ£èŠåïŒå Žåã«ãã£ãŠã¯ãããŒã¿æ§é ããããã¹ããæµ ããªãããã«åèšèšããããšã§ãããã©ãŒãã³ã¹ãšã³ãŒãã®æçãã®äž¡æ¹ãåäžããããšããããŸãã
4. JavaScriptãšã³ãžã³ãçè§£ãã
JavaScriptãšã³ãžã³ã¯åžžã«é²åããŠããŸããå€ãããŒãžã§ã³ã§ã¯é¡èãªããã©ãŒãã³ã¹ã³ã¹ãããã£ãæ©èœããæ°ããããŒãžã§ã³ã§ã¯é«åºŠã«æé©åãããŠãããããããŸãããJavaScriptã©ã³ã¿ã€ã ïŒäŸïŒNode.jsã®ããŒãžã§ã³ããã©ãŠã¶ã®ããŒãžã§ã³ïŒãææ°ã®ç¶æ ã«ä¿ã¡ãŸãããã
5. ãã€ã¯ãæé©åã¯æ éã«æ€èšãã
以äžã¯ä»®èª¬çãªæ¯èŒã§ãããååã瀺ããŠããŸããéåžžã«å€§ããªãªããžã§ã¯ããã1ã€ã®ããããã£ã ããã¿ã€ããªã«ãŒãå ã§æ°çŸäžåæœåºããå¿ èŠãããã·ããªãªã§ã¯ïŒ
const massiveObject = { /* ... 10000 properties ... */ };
// Potentially slightly faster in extremely tight loops for single property extraction
// but much less readable.
const { propertyIActuallyNeed } = massiveObject;
// Direct access might be marginally faster in specific, rare benchmarks
// const propertyIActuallyNeed = massiveObject.propertyIActuallyNeed;
å®çšçãªæŽå¯ïŒã»ãšãã©ã®éçºè ãšã»ãšãã©ã®ã¢ããªã±ãŒã·ã§ã³ã«ãšã£ãŠãåå²ä»£å ¥ã«ããå¯èªæ§ã®åäžã¯ããã®ãããªã·ããªãªã§ã®ããããããªããã©ãŒãã³ã¹å·®ãã¯ããã«äžåããŸãããããã¡ã€ãªã³ã°ã«ãã£ãŠãããé倧ãªããã«ããã¯ã§ããããšã蚌æããããã®ç¹å®ã®ããããã¹ã§å¯èªæ§ãäºã®æ¬¡ã§ããå Žåã«ã®ã¿ãçŽæ¥ã¢ã¯ã»ã¹ã«é Œãã¹ãã§ãã
6. ããã©ãŒãã³ã¹ã®ã°ããŒãã«åïŒãããã¯ãŒã¯ãšããŒã¿è»¢é
ã°ããŒãã«ãªèŠèŽè ã«ãšã£ãŠããããã¯ãŒã¯çµç±ã®ããŒã¿è»¢éã®ããã©ãŒãã³ã¹ã¯ãã¯ã©ã€ã¢ã³ããµã€ãã®JavaScriptåŠçé床ããã°ãã°ç®å°åããŸãã以äžãæ€èšããŠãã ããã
- APIã¬ã¹ãã³ã¹ãµã€ãºïŒAPIãã¯ã©ã€ã¢ã³ãã«å¿ èŠãªããŒã¿ã®ã¿ãéä¿¡ããããã«ããŸããã»ãã®æ°åã®ããããã£ããå¿ èŠãªãå Žåã«ã巚倧ãªãªããžã§ã¯ãå šäœãéä¿¡ããã®ã¯é¿ããŠãã ãããããã¯ã¯ãšãªãã©ã¡ãŒã¿ãç¹å®ã®APIãšã³ããã€ã³ããéããŠéæã§ããŸãã
- ããŒã¿å§çž®ïŒAPIã¬ã¹ãã³ã¹ã«HTTPå§çž®ïŒGzipãBrotliïŒãå©çšããŸãã
- ã³ã³ãã³ãããªããªãŒãããã¯ãŒã¯ïŒCDNïŒïŒéçã¢ã»ãããAPIã¬ã¹ãã³ã¹ãå°ççã«åæ£ããããµãŒããŒããæäŸããäžçäžã®ãŠãŒã¶ãŒã®é å»¶ãåæžããŸãã
äŸïŒã°ããŒãã«ãªeã³ããŒã¹ãã©ãããã©ãŒã ãæ³åããŠã¿ãŠãã ãããæ±äº¬ã®ãŠãŒã¶ãŒã補å詳现ããªã¯ãšã¹ãããå Žåãã¯ã©ã€ã¢ã³ãã®JavaScriptãã©ãã ãéãåŠçãããã«ããããããå°ãã調æŽãããAPIã¬ã¹ãã³ã¹ã¯ãå·šå€§ã§æé©åãããŠããªãã¬ã¹ãã³ã¹ãããã¯ããã«éãããŒããããŸãã
äžè¬çãªèœãšã穎ãšãã¹ããã©ã¯ãã£ã¹
èœãšã穎1ïŒæªäœ¿çšã®å€æ°ã«å¯Ÿããåå²ä»£å ¥ã®éå°äœ¿çš
倧ããªãªããžã§ã¯ããåå²ä»£å ¥ãããã®ãã¡ã®1ã€ã2ã€ã®ããããã£ãã䜿çšãããä»ã¯æªäœ¿çšã®ãŸãŸã«ãããšãããããªãªãŒããŒããããçºçããå¯èœæ§ããããŸããçŸä»£ã®ãšã³ãžã³ã¯æé©åã«åªããŠããŸãããããã§ãå¿ èŠãªãã®ã ããåå²ä»£å ¥ããã®ããã¹ããã©ã¯ãã£ã¹ã§ãã
ãã¹ããã©ã¯ãã£ã¹ïŒã©ã®ããããã£ãæœåºããŠããããæç¢ºã«ããŠãã ãããã»ãšãã©ã®ããããã£ãå¿ èŠãªå Žåã¯ãåå²ä»£å ¥ã¯çŽ æŽãããã§ãã倿°ã®äžãã1ã€ã2ã€ããå¿ èŠãªãå Žåã¯ãçŽæ¥ã¢ã¯ã»ã¹ã®æ¹ãæç¢ºã§ãæœåšçã«ãããã«éããããããŸããïŒãã ããéåžžã¯éå€§ãªæžå¿µäºé ã§ã¯ãããŸããïŒã
èœãšã穎2ïŒ`null`ãŸãã¯`undefined`ã®ãªããžã§ã¯ããç¡èŠãã
`null`ãŸãã¯`undefined`ã®ãªããžã§ã¯ãããããããã£ãåå²ä»£å ¥ããããšãããšã`TypeError`ãã¹ããŒãããŸããããã¯ã©ã³ã¿ã€ã ãšã©ãŒã®äžè¬çãªåå ã§ãã
ãã¹ããã©ã¯ãã£ã¹ïŒåå²ä»£å ¥ãããªããžã§ã¯ãã`null`ãŸãã¯`undefined`ã§ãªãããšãåžžã«ç¢ºèªããŠãã ãããè«çORïŒ`||`ïŒããªãã·ã§ãã«ãã§ã€ãã³ã°ïŒ`?.`ïŒã䜿çšããŠããå®å šã«ã¢ã¯ã»ã¹ã§ããŸãããåå²ä»£å ¥ã«ã¯äºåã®ãã§ãã¯ãå¿ èŠã§ãã
const data = null;
// This will throw an error:
// const { property } = data;
// Safer approach:
if (data) {
const { property } = data;
// ... use property
}
// Or using optional chaining for nested properties:
const nestedObj = { user: null };
const userName = nestedObj.user?.name;
console.log(userName); // undefined
èœãšã穎3ïŒã³ã³ããã¹ããç¡èŠãã
ããã©ãŒãã³ã¹ã¯ã³ã³ããã¹ãã«çžå¯Ÿçã§ããããŒãžããŒãæã«äžåºŠã ãåŒã³åºããã颿°ã§æ°ããªç§ç¯çŽããŠãæå³ããããŸããããŠãŒã¶ãŒã€ã³ã¿ã©ã¯ã·ã§ã³ã®ã«ãŒãå ã§æ¯ç§æ°åååŒã³åºããã颿°ã§æ°ããªç§ç¯çŽããããšã¯éåžžã«éèŠã§ãã
ãã¹ããã©ã¯ãã£ã¹ïŒåžžã«ã¢ããªã±ãŒã·ã§ã³ããããã¡ã€ãªã³ã°ããŠãããã©ãŒãã³ã¹æé©åã®åãçµã¿ãæã倧ããªåœ±é¿ãäžããå Žæãçè§£ããŠãã ãããã¯ãªãã£ã«ã«ãã¹ãšé »ç¹ã«å®è¡ãããã³ãŒãã»ã¯ã·ã§ã³ã«çŠç¹ãåœãŠãŠãã ããã
çµè«ïŒããã©ãŒãã³ã¹ãšå¯èªæ§ã®ãã©ã³ã¹
JavaScriptã®ãªããžã§ã¯ããã¿ãŒã³ãããã³ã°ãäž»ã«åå²ä»£å ¥ãéããŠãã³ãŒãã®å¯èªæ§ãç°¡æœããä¿å®æ§ã®é¢ã§çµ¶å€§ãªå©ç¹ãæäŸããŸããããã©ãŒãã³ã¹ã«é¢ããŠã¯ãçŸä»£ã®JavaScriptãšã³ãžã³ã¯éåžžã«å¹ççã§ããã°ããŒãã«ãªèŠèŽè ã察象ãšãã倧倿°ã®ã¢ããªã±ãŒã·ã§ã³ã«ãšã£ãŠããªããžã§ã¯ãåå²ä»£å ¥ã®ããã©ãŒãã³ã¹ãªãŒããŒãããã¯ç¡èŠã§ããã¬ãã«ã§ãããããã¯ãªãŒã³ãªã³ãŒãã®ããã®äŸ¡å€ãããã¬ãŒããªãã§ãã
ãªããžã§ã¯ããã¿ãŒã³åŠçãæé©åããéµã¯ãã³ã³ããã¹ããçè§£ããããšã«ãããŸãã
- ãŸããããã¡ã€ãªã³ã°ããïŒæé©åããåã«å®éã®ããã«ããã¯ãç¹å®ããŸãã
- å¯èªæ§ãåªå ããïŒåå²ä»£å ¥ã¯æç¢ºãªã³ãŒããæžãããã®åŒ·åãªããŒã«ã§ãã
- 極端ãªã±ãŒã¹ã«æ³šæããïŒéåžžã«å€§ããªãªããžã§ã¯ããæ¥µç«¯ã«ã¿ã€ããªã«ãŒãã®å Žåã¯ããã¬ãŒããªããèæ ®ããŸããããããã¡ã€ãªã³ã°ã§åé¡ã確èªãããå Žåã«éããŸãã
- ã°ããŒãã«ã«èããïŒãããã¯ãŒã¯ããã©ãŒãã³ã¹ãããŒã¿è»¢éãAPIèšèšã¯ãã¯ã©ã€ã¢ã³ããµã€ãJavaScriptã®ãã€ã¯ãæé©åããããã°ããŒãã«ãªèŠèŽè ã®ãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ã«ã¯ããã«å€§ããªåœ±é¿ãäžããŸãã
ãã©ã³ã¹ã®åããã¢ãããŒããæ¡çšããããšã§ãéçºè ã¯JavaScriptã®ãªããžã§ã¯ããã¿ãŒã³ãããã³ã°æ©èœã®åã广çã«æŽ»çšããäžçäžã®ãŠãŒã¶ãŒã®ããã«å¹ççã§èªã¿ãããã髿§èœãªã¢ããªã±ãŒã·ã§ã³ãäœæã§ããŸãã